/**
 * Promise 因为有new，所以是一个类
 * 执行或者创建这个类的时候，会立即调用一个匿名函数，立即执行。也叫执行函数。
 * 执行函数，会永久性改变 promise 状态，状态一旦改变，将不能更改。
 * 状态改变路径：由 等待(pending) -> 成功(fullfilled) ；等待 -> 失败(rejected)
 * 执行函数，包括 resolve() 变为成功  reject() 变为失败
 * 
 *  then 方法内部做的事情是判断状态，调用相对应的函数
 *  由于每个 Promise 都有 then 方法，所以它是原型对象的方法
 *  then 成功回调有一个参数，失败回调有一个原因
 */

 const MyPromise = require('./myPromise')

 let createPromise = new MyPromise((resolve, reject) => {
    //  setTimeout(function(){
    //     resolve('成功')
    //  },2000)
    //  resolve('成功')
     reject('失败')
    
 })

 function other(){
     return new MyPromise((resolve,reject) => {
         resolve('other')
     })
 }

//  then 方法链式调用,也就是说 需要返回 promise 对象
createPromise.then(value => {
     console.log(value)
 },reason => {
     console.log(reason)
     return 1000
 }).then(value => {
     console.log(value)
 }, reason =>{
     console.log(reason)
 })